#coding=utf-8
from ast import If
from typing import Any
import jwt
from jwt.exceptions import InvalidTokenError
from passlib.context import CryptContext
from datetime import datetime, timedelta,timezone
from src.utils.config import read_config

# 密钥，用于签名和验证JWT
SECRET_KEY = 'fastapi_longyu12'
# 令牌过期时间 默认十天
EXP = datetime.now(timezone.utc)+timedelta(days=1)
project = read_config("project")
if project.get("tokenTIme"):
    EXP = datetime.now(timezone.utc)+ timedelta(days=project.get("tokenTIme"))
 
"""
生成 token 令牌
@payload: Any 存在token里面的信息
"""
def createToken(payload: Any):
    payload["exp"] = EXP
  
    token = jwt.encode(payload, SECRET_KEY, algorithm='HS256' )
   
    return token

def vertify_is_login(token: str):
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"], verify=False)
        print(int(payload.get("exp")) , int((datetime.now(timezone.utc)).timestamp()))
        if  int(payload.get("exp")) < int((datetime.now(timezone.utc)).timestamp()):
            print("登录已过期")
            return False 
        else: 
            return True
    except jwt.exceptions.ExpiredSignatureError:
        print("登录已过期")
        return False
    except (jwt.exceptions.InvalidSignatureError, jwt.exceptions.DecodeError):
        print("无效凭证")
        return False
    

# def getTokenInfo():


 

# 载荷，即JWT中包含的信息
# payload = {
#     'user_id': 123,
#     'username': 'john_doe',
#     'exp': datetime.datetime.utcnow() + datetime.timedelta(days=1)
# }

# # 生成JWT
# token = jwt.encode(payload, secret_key, algorithm='HS256')
# print('Generated JWT:', token)
 